G=tf([2,1],[1,7,18,21,10]);
step(G);
[y,t]=step(G);
[Y,k]=max(y);
t0=t(k);%峰值时间
for i=1:size(t)-1
    if y(i)>=y(i+1)
        break;
    end
end
t1=t(i);%上升时间
C=dcgain(G);
for i=k:size(t)
    if abs(y(i)-C)/C<=0.05
        break;
    end
end
t2=t(i);%稳态时间
p=[1,7,18,21,10];
n=size(p,2);
if mod(n,2)==0
    n1=n/2;
end
if mod(n,2)==1
    n1=(n+1)/2;
    p=[p,0];
end
l=reshape(p,2,n1);
L=zeros(n,n1);
L(1:2,:)=l;
for i=1:2
       L(i,1)=max(L(i,1),0.001); 
end
for i=3:n
    for j=1:n1-1
        L(i,j)=(L(i-1,j)*L(i-2,j+1)-L(i-1,j+1)*L(i-2,j))/L(i-1,j);
    end
end
%%判断是否稳定
flag=1;
for i=1:n
    for j=1:n1
        if L(i,j)<0
            flag=0;
        end
    end
end
if flag==1
    fprintf("稳定\n");
else
    fprintf("不稳定\n");
end
fprintf('峰值时间：%f\n',t0);
fprintf('上升时间：%f\n',t1);
fprintf('稳态时间：%f\n',t2);
fprintf('超调量：%f\n',Y-C);
